/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hibernate;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;

/**
 *
 * @author Winnie
 */
public class CuentasHasClienteDAO {

    Session hSession = null;

    public CuentasHasClienteDAO() {
        this.hSession = HibernateUtil.getSessionFactory().openSession();
    }

    public void create(Clientes cliente, Cuentas cuenta, String tipo) {
        CuentasHasClientes cc = new CuentasHasClientes(new CuentasHasClientesId(cuenta.getPkCuenta(), cliente.getPkCliente()), cuenta, cliente, tipo);
        hSession.beginTransaction();
        hSession.save(cc);
        hSession.getTransaction().commit();
    }
    
    public boolean combinacionExiste(Clientes cliente, Cuentas cuenta) {
        hSession.clear();
        Query q = hSession.createQuery("from CuentasHasClientes where clientes_pk_cliente='"+ cliente.getPkCliente()+"' and cuentas_pk_cuenta='"+ cuenta.getPkCuenta() +"'" );
        List<CuentasHasClientes> lista = q.list();
        if(lista.size()>0){
            return true;
        }
        return false;
    }
    
    public List<Cuentas> getListCuentas(Clientes cliente) {
        hSession.clear();
        Query q = hSession.createQuery("from CuentasHasClientes where clientes_pk_cliente='"+ cliente.getPkCliente()+"' and tipo_cliente='titular'" );
        List<CuentasHasClientes> lista = q.list();
        
        CuentasDAO DAOCuenta = new CuentasDAO();
        List<Cuentas> listaCuentas = new ArrayList<>();
        
        for (CuentasHasClientes cc : lista) {
            Cuentas cuenta = DAOCuenta.get(cc.getId().getCuentasPkCuenta());
            listaCuentas.add(cuenta);
        }
        
        if (!listaCuentas.isEmpty()) {
            return listaCuentas;
        }
        return null;
    }
}
